package com.yswwpp.signature.sha;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.codec.binary.Hex;

public class SHA256 {

	public static void main(String[] agre) {
		String str = "hello world!";
		// System.out.println(getSHA256StrJava(str).length());
		// System.out.println(getSHA256StrJava(str));

		byte[] tem = { (byte) -1, (byte) -2, (byte) 2, (byte) -100 };
		System.out.println(new String(Hex.encodeHex(tem)));

	}

	/**
	 * SHA256加密
	 * @param originArr 加密内容
	 * @return 加密后的字节数组
	 * @throws NoSuchAlgorithmException
	 */
	public static byte[] sha256(byte[] originArr) throws NoSuchAlgorithmException {

		MessageDigest messageDigest = null;
		messageDigest = MessageDigest.getInstance("SHA-256");
		return messageDigest.digest(originArr);
	}

	/**
	 * 将byte转为16进制
	 * 
	 * @param bytes
	 * @return
	 */
	private static String byte2Hex(byte[] bytes) {
		StringBuffer stringBuffer = new StringBuffer();
		String temp = null;
		for (int i = 0; i < bytes.length; i++) {
			temp = Integer.toHexString(bytes[i] & 0xFF);
			if (temp.length() == 1) {
				// 1得到一位的进行补0操作
				stringBuffer.append("0");
			}
			stringBuffer.append(temp);
		}
		return stringBuffer.toString();
	}

	/***
	 * 利用Apache的工具类实现SHA-256加密
	 * 
	 * @param str
	 *            加密后的报文
	 * @return
	 */
	public static String getSHA256Str(String str) {
		MessageDigest messageDigest;
		String encdeStr = "";
		try {
			messageDigest = MessageDigest.getInstance("SHA-256");
			byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
			encdeStr = Hex.encodeHexString(hash);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return encdeStr;
	}
}
